package zxq.rollcall.course.service;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import zxq.rollcall.course.entity.SystemSignTableEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import zxq.rollcall.course.entity.dto.db.CourseSignDTO;
import zxq.rollcall.course.entity.dto.db.StudentInfoDTO;
import zxq.rollcall.course.entity.dto.db.StudentSignDTO;
import zxq.rollcall.course.entity.dto.db.TeacherSignDTO;
import zxq.rollcall.course.entity.query.PageQuery;

import java.util.List;

/**
 * <p>
 * 用户签到得表 服务类
 * </p>
 *
 * @author Yanghu
 * @since 2020-01-22
 * */
public interface MPSystemSignTableService extends IService<SystemSignTableEntity> {

    /**
     * 初始化学生的签到
     * @param teacherId 临时签到的id
     * @param stuIds 学生的id
     * @return
     */
    Boolean initStudentSign(Integer teacherId, List<Integer> stuIds);



    /**
     * 学生更新自己的签到
     * @param teacherId 临时签到的id
     * @param studentId 学生的id
     * @return
     */
    Boolean updateStudentSign(Integer teacherId,Integer studentId);

    /**
     * 查看课程id
     * @param courseId 课程id
     * @return
     */
    List<CourseSignDTO> queryCourseSign(Integer courseId);

    /**
     * 查看最新得签到Id
     * @param courseId
     * @return
     */
    CourseSignDTO queryCourseTeacherSign(Integer courseId,Integer teachSignId);

    /**
     * 查看学生签到记录,统计
     * @param courseId 课程id
     * @return
     */
    List<StudentSignDTO> queryStudentSign(Integer courseId);

    /**
     * 查看某一学生得签到情况
     * @param courseId
     * @param studentId
     * @return
     */
    StudentSignDTO queryStudentSignDetail(Integer courseId, Integer studentId);
    /**
     * 学生签到得详细信息，全部课程
     * @param studentId 学生签到得信息
     * @return
     */
    List<StudentInfoDTO> queryStudentInfoSign(Integer studentId,PageQuery pageQuery);

    /**
     * 学生签到得详细信息，单一课程
     * @param studentId 学生id
     * @param courseId 课程id
     * @param pageQuery 页码查询
     * @return
     */
    List<StudentInfoDTO> queryCourseStudentInfoSign(Integer studentId, Integer courseId,PageQuery pageQuery);


    List<TeacherSignDTO> queryTeacherSignDetail(Integer teacherSignId);

}
